package server;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

public class PropertiesFTP {

    public PropertiesFTP() {
        super();
    }

    public static void saveProperties(Properties props, String fileLocation, String comments) throws FileNotFoundException,
            IOException {
        OutputStream out = new FileOutputStream(fileLocation);
        props.store(out, comments);
        out.flush();
        out.close();
    }

    public static void saveProperties(Hashtable<String, String> props, String fileLocation, String comments) throws FileNotFoundException,
            IOException {
        OutputStream out = new FileOutputStream(fileLocation);
        Enumeration e = props.elements();
        Properties prop = new Properties();
        while (e.hasMoreElements()) {
            prop.setProperty(e.toString(), props.get(e.toString()));
        }
        prop.store(out, comments);

        out.flush();
        out.close();
    }

    public static Hashtable loadProperties(String propertiesFileLocation) throws FileNotFoundException, IOException {
        Properties props = new Properties();
        props.load(new FileInputStream(propertiesFileLocation));
        Hashtable table;
        table = (Hashtable) props;
        return table;
    }

    /**
     *
     * Cette méthode affiche chaque paire [clé,valuer] d'un fichier Properties
     *
     * @param props Le fichier à afficher
     */
    public static void displayProperties(Properties props) {
        Iterator it = props.keySet().iterator();
        while (it.hasNext()) {
            String propertyName = (String) it.next();
            String propertyValue = props.getProperty(propertyName);
            System.out.println(propertyName + "=" + propertyValue);
        }
    }

    /**
     * Cette méthode permet de démarrer la démo.
     *
     * On y crée un fichier Properties que l'on remplit avec des paires [clé,valeur]
     * puis on le stocke sur le disque. Ensuite on le re depuis le disaue et, enfin,
     * son contenu est affiché.
     *
     * @param args non utilisé
     */
    public static void main(String[] args) {
        PropertiesFTP demo = new PropertiesFTP();

        //Emplacement où sera stocké le fichier
       // String propertiesFileLocation = "c:/ftpDirectory/system/systemproperties.properties";
        String propertiesFileLocation="./config.properties";

        //On instancie un nouvel objet Properties
        Properties myProps = new Properties();
        //On y insère des paires [clé,valeur]
        myProps.setProperty("florian", "FLGpwd"); 
        myProps.setProperty("baptiste", "BLHpwd");
        myProps.setProperty("admin", "password");
        myProps.setProperty("anonymous", "anonymous");

        try {
            //On stocke le fichier sur le disque
            demo.saveProperties(myProps, propertiesFileLocation, "Clients");
            //On crée un nouvel objet Properties en lisant le fichier sur le disque
            Hashtable loadedProps = demo.loadProperties(propertiesFileLocation);
            //On affiche le contenu du fichier
            System.out.println(loadedProps.toString());
            System.out.println("\n");
            System.out.println(loadedProps.get("admin"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
